/*
 * 功能：自定义拦截器的配置
 * 作者：张杨(Sunny)
 * 日期： 2024/10/26 上午11:13
 */
package com.example.springboot.common;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;


/**
 * 拦截器配置类
 *
 * 功能：用于配置Spring MVC的拦截器规则
 * 主要职责：
 * 1. 注册JWT拦截器
 * 2. 配置拦截路径规则
 * 3. 设置排除路径
 */
@Configuration
public class InterceptorConfig extends WebMvcConfigurationSupport {

    /**
     * 重写 addInterceptors 方法，配置拦截器规则
     *
     * @param registry 拦截器注册表，Spring提供的用于管理拦截器的工具类
     */
    @Override
    protected void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(jwtInterceptor()) // 配置 jwtInterceptor 拦截器规则
                .addPathPatterns("/**") // 拦截所有的请求路径
                .excludePathPatterns("/login"); // 排除登录请求，也可以用AuthAccess;
        super.addInterceptors(registry);
    }

    /**
     * 创建并注入 JwtInterceptor 实例到 Spring 容器中
     * 这样可以在整个应用中使用这个拦截器
     *
     * @return JwtInterceptor 实例
     */
    @Bean
    public JwtInterceptor jwtInterceptor() {
        return new JwtInterceptor();
    }
}
